From: Jan Beulich Date: Fri, 31 Oct 2014 10:31:11 +0000 (+0100) Subject: VMX: values written to MSR_IA32_SYSENTER_E[IS]P should be canonical X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~4118 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22?a=commitdiff_plain;h=93cc5c6f1641e90eb120826d42f103b7726efb8e;p=xen.git VMX: values written to MSR_IA32_SYSENTER_E[IS]P should be canonical A recent KVM change by Nadav Amit helped spot that we have the same issue as they did. Signed-off-by: Jan Beulich Reviewed-by: Tim Deegan Reviewed-by: Andrew Cooper Acked-by: Kevin Tian --- diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 29aaad4a4a..79a69b1d0c 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -2273,9 +2273,13 @@ static int vmx_msr_write_intercept(unsigned int msr, uint64_t msr_content) __vmwrite(GUEST_SYSENTER_CS, msr_content); break; case MSR_IA32_SYSENTER_ESP: + if ( !is_canonical_address(msr_content) ) + goto gp_fault; __vmwrite(GUEST_SYSENTER_ESP, msr_content); break; case MSR_IA32_SYSENTER_EIP: + if ( !is_canonical_address(msr_content) ) + goto gp_fault; __vmwrite(GUEST_SYSENTER_EIP, msr_content); break; case MSR_IA32_DEBUGCTLMSR: {